A type system is a system used in programming languages to aid in the detection and prevention of run-time errors. A programming language is “typed” if it contains a set of types that are declared for objects such as variables, functions, etc., and these types are checked versus a set of rules during compilation of a program written in the language. If the source code written in the typed language violates one of the type rules, a compiler error is determined. The process of verifying and enforcing type constraints (also referred to as type checking), may occur either at compile-time (i.e., static type checking) or run-time (dynamic type checking).